<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>json - 非常重要</title>
</head>
<body>
    <script>
        //json是轻量级的数据交互的格式.
        //后端(java,Python) => 返回json格式的数据 => 前段进行解析.

        //定义一个单个json对象
        let obj1 = {"id":10,"name":"tom"};

        //通过json对象.key来获取value
        console.log(obj1.id);

        //定义一个json数组
        let arr = [{"id":10,"name":"tom"},{"id":9,"name":"admin"}];
        console.log(arr[1].name);//admin

        //定义一个json字符串 - 单个对象
        let str1 = '{"id":10,"name":"tom"}';
        //let str1 = "{'id':10,'name':'tom'}";//格式不对

        //json字符串转成json对象
        let str1_to_json = eval('('+str1+')');//格式不对也可以运行成功
        //let str1_to_json = eval(str1);//报错(无论格式对与错)
        console.log(str1_to_json.name);

        //推荐用这个,格式不对就报错
        let s = JSON.parse(str1);
        console.log(s);
        console.log(s.id);

        //json字符串
        let str_arr = '[{"id":10,"name":"tom"},{"id":20,"name":"jerry"}]';
        //let str_arr = "[{'id':10,'name':'tom'},{'id':20,'name':'jerry'}]"
        console.log(eval(str_arr));//格式不对也可以运行成功

        console.log(JSON.parse(str_arr));//格式不对就报错

        //json对象=>json字符串, JSON.stringify(value[, replacer[, space]])
        //参数说明
        // value:
        //     必需， 要转换的 JavaScript 值（通常为对象或数组）。
        // replacer:
        //     可选。用于转换结果的函数或数组。
        //     如果 replacer 为函数，则 JSON.stringify 将调用该函数，并传入每个成员的键和值。使用返回值而不是原始值。如果此函数返回 undefined，则排除成员。根对象的键是一个空字符串：""。
        //     如果 replacer 是一个数组，则仅转换该数组中具有键值的成员。成员的转换顺序与键在数组中的顺序一样。当 value 参数也为数组时，将忽略 replacer 数组。
        // space:
        //     可选，文本添加缩进、空格和换行符，如果 space 是一个数字，则返回值文本在每个级别缩进指定数目的空格，如果 space 大于 10，则文本缩进 10 个空格。space 也可以使用非数字，如：\t。
        //
        //可以将JavaScript字符串转换成json字符串
        //let arr = [ "Google", "Runoob", "Taobao", "Facebook" ];
        //json不能存储Date对象, JSON,stringify会将所有日期转换为字符串
        //let obj = { "name":"Runoob", "initDate":new Date(), "site":"www.runoob.com"};
        console.log(JSON.stringify(arr,null,"\t"));

        //结构稍微复杂一点的结构
        let mm = {
            msg:"查询xx信息",
            code:200,
            data:[
                {"id":10,"name":"tom"},
                {"id":20,"name":"jerry"}
            ]
        }
        console.log(mm.data[1].name)
    </script>
</body>
</html>